package com.tencreat.service.mall;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tencreat.common.core.domain.entity.MallMessage;
import com.tencreat.domain.mall.MallMessageRecord;
import com.tencreat.domain.mall.vo.MallMessageListVO;
import org.yeauty.pojo.Session;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 消息处理
 * @author zixin
 */
public interface IMallMessageService {

    /**
     * 发送消息
     * @param userId 用户ID
     * @param message 消息主体
     */
    void sendMessage(Session session,String userId, String message);

    void messageHandling(MallMessage mallMessage);

    /**
     * 清除无用socket连接
     * @param clients 客户端
     */
    void clearUnSocket(Map<String, Session> clients);

    void messageListHandling(MallMessage mallMessage);

    /**
     * app端清除未读消息数
     */
    void clearAppUnreadMessage();

    /**
     * 平台端清除未读消息数
     * @param userId app用户uuid
     */
    void clearUnreadMessage(Long userId);

    /**
     * app端获取未读消息数
     * @return 结果
     */
    Integer getAppUnreadMessage();

    /**
     * 获取所有消息，默认分页10条
     * @param userId 用户ID app端使用uuid  平台使用id
     * @param page 分页参数
     * @param time 什么时间之前
     * @return 结果
     */
    Page<MallMessage> pageMessage(Page page, Long userId, LocalDateTime time);


    Page<MallMessageRecord> appMessage(Page page, Long userId);

    /**
     * 获取消息列表
     * @return 消息列集合
     */
    List<MallMessageListVO> selectList(Integer isToday,String mobile);

    /**
     * 今日接待数量统计
     * @return
     */
    Integer receptionToday();

    List<MallMessageListVO> listByUserId(Long userId);
}
